package com.activities;


import java.io.File;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;

import com.adaptadores.LugaresThumbAdapter;
import com.callbacks.Callbacks.LCompleted;
import com.callbacks.InterfaceLugares;
import com.clases.Lugar;
import com.constantes.Constantes;
import com.example.santiagotur.R;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.util.InitGrid;


public class Busqueda_lugar extends Activity implements InterfaceLugares {

    private LugaresThumbAdapter adapter;

    private ImageView btn_back;

    private GridView gridBusqueda;

    private EditText ingreso_busqueda;

    int columWidth;

    private void config(Context context) {

        File cacheDir = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()
                    + "SantiagoTur/");

        if (!cacheDir.exists())
            cacheDir.mkdir();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPoolSize(3) // default
        .threadPriority(Thread.NORM_PRIORITY - 2) // default
        .tasksProcessingOrder(QueueProcessingType.FIFO) // default
        .writeDebugLogs().denyCacheImageMultipleSizesInMemory().discCache(new UnlimitedDiscCache(cacheDir)) // default
        .build();

        if (ImageLoader.getInstance().isInited())
            ImageLoader.getInstance().destroy();

        ImageLoader.getInstance().init(config);
    }

    private void getLugaresBusqueda(String nombre) {

        Lugar lg = new Lugar(this);
        lg.setCallbackLugar(new LCompleted() {

            @Override
            public void Completed(Lugar[] result) {

                procesarLugares(result);

            }
        });
        lg.setLast(gridBusqueda.getChildCount());
        lg.setNombre(nombre);
        lg.execute(Constantes.ACCCION_LUGAR_GET_BUSQUEDA);

    }

    private void inicializar() {

        config(this);
        btn_back = (ImageView) findViewById(R.id.image_Btn_Back);
        ingreso_busqueda = (EditText) findViewById(R.id.Busqueda_nombre);
        gridBusqueda = (GridView) findViewById(R.id.gridViewBusqueda);
        columWidth = InitGrid.initilizeGridLayout(gridBusqueda);
        ingreso_busqueda.addTextChangedListener(new TextWatcher() {

            @Override
            public void afterTextChanged(Editable s) {

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                if (ingreso_busqueda.getText().length() > 0)
                    getLugaresBusqueda(s.toString());
                else
                    adapter.clear();
            }
        });

    }

    private void procesarLugares(Lugar[] result) {

        if (adapter == null) {
            adapter = new LugaresThumbAdapter(this, columWidth,this);
            gridBusqueda.setAdapter(adapter);
        }
        else
            adapter.clear();

        for (Lugar lg : result) {
            adapter.add(lg);
        }

        adapter.notifyDataSetChanged();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.busqueda);
    }

    @Override
    protected void onResume() {

        inicializar();
        super.onResume();
    }

	@Override
	public void getLugares(int last) {
		  Lugar lg = new Lugar(this);
	        lg.setCallbackLugar(new LCompleted() {

	            @Override
	            public void Completed(Lugar[] result) {

	                procesarLugares(result);

	            }
	        });

	        lg.setLast(last);
	        lg.execute(Constantes.ACCCION_LUGAR_GET_BUSQUEDA);
		
	}

}
